package com.totoro.tyrank.utils;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author TOTORO
 * @date 2024/8/28 14:36
 */
public class StrUtil {
    /**
     * 去除String指定索引间的字符
     * 索引不包括自身
     * @param str
     * @param start
     * @param end
     * @return
     */
    public static String removePart(String str, int start, int end) {
        return str.substring(0, start + 1) + str.substring(end);
    }

    /**
     * 获得两个字符中的字符串
     * @param str
     * @param startChar
     * @param endChar
     * @return
     */
    public static String getPart(String str, char startChar, char endChar) {
        if(!str.contains(Character.toString(startChar)) || !str.contains(Character.toString(endChar))) {
            return "";
        }
        return str.substring(str.indexOf(startChar) + 1, str.indexOf(endChar));
    }

    public static String getContentAfter(String original, String target) {
        // 查找目标字符串在原字符串中首次出现的位置
        int index = original.indexOf(target);
        if (index != -1) {
            // 如果找到目标字符串，截取其后面的内容
            return original.substring(index + target.length());
        }
        // 若未找到目标字符串，返回空字符串
        return "";
    }


    public static boolean isNumeric(String str) {
        return str.matches("\\d+");
    }

    /**
     * 将Java中的变量名转为sql字段名
     * 注意需要驼峰命名法对应sql中的_
     * @param param
     * @return
     */
    public static String upperCharToUnderLine(String param) {
        Pattern p = Pattern.compile("[A-Z]");
        if (param == null || param.equals("")) {
            return "";
        }
        StringBuilder builder = new StringBuilder(param);
        Matcher mc = p.matcher(param);
        int i = 0;
        while (mc.find()) {
            builder.replace(mc.start() + i, mc.end() + i, "_" + mc.group().toLowerCase());
            i++;
        }
        if ('_' == builder.charAt(0)) {
            builder.deleteCharAt(0);
        }
        return builder.toString();
    }

    public static Boolean isNotBlank(String str) {
        return null != str && ! (str.equals(""));
    }

    public static Boolean isBlank(String str) {
        return !isNotBlank(str);
    }
}
